<?php
//Inclure la class d'accès à la base de données
include_once '../../DBAccess/DBAccess.php';

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of consoHeating
 *
 * @author Tony
 */
class AlgoHeating {
    //put your code here
    
    public $consoKwhPAC; //Consommation en Kw/h pour pompe à chaleur
    public $totalSurface; //valeur de calcul pour le SRE
    public $SRE; //Surface de référence énergétique
    
    public $coefOilKwh; //Coeficient pour la transformation de litre de mazout en Kw/h
    public $consoKwhOil; // Consommation en Kw/h pour chaudière à mazout
    public $consoKwhWoodPellet; //COnsommation en Kw/h pour chaudière à buches ou à pellets
    public $consoKwhSoapstone; //Consommation en Kw/h pour Poêle à bois et pierre ollaire
    
    public $coefConsoWood; //Coeficient de consomation pour les buches (DB)
    public $coefWeightWood; //Coeficient de poids pour buches (DB)
    public $coefConsoPellet;//Coeficient de consomation pour les pellets (DB)
    public $coefWeightPellet;//Coeficient de poids pour pellets (DB)
    public $coefConsoSoapstone; //Coeficient de consommation pour Poêle à bois et pierre ollaire (DB)
    public $coefWeightSoapstone; //Coeficient poids pour Poêle à bois et pierre ollaire (DB)
    
    public $rendementWoodPellet;//Rendement pour un chaudière à bûches ou à pellets
    public $rendementSoapstone; //Rendement pour Poêle à bois et pierre ollaire
    
    //Fonction pour le calcul de la consomation en Kw/h d'un chauffage à pompe à chaleur
    function getConsoHeatPump($house){
        
        //Calcul du SRE
        $this->SRE = $this->getSRE($house);
        
         //Si l'installation est ECS seul
        if ($house->heating->isECSOnly == true) {
            //Si l'unité est en CHF
            if ($house->heating->unit == 1) {
                //Si le prix du kw/h est connu
                if ($house->heating->kwhPrice != null) {
                    //Calcul e la conso selon le prix entré par l'utilisateur
                    $this->consoKwhPAC = $house->heating->billValue / $house->heating->kwhPrice;
                } else {
                    //Récupération du prix du kw/h dans DB
                    $house->heating->kwhPrice = DBAccess::getKwhPrice();
                    //Calcul de la conso
                    $this->consoKwhPAC = $house->heating->billValue / $house->heating->kwhPrice;
                }
            } else {
                //Si l'unité est en kw/h
                if ($house->heating->unit == 2) {
                    //Calcul de la conso
                    $this->consoKwhPAC = $house->heating->billValue;
                }
            }

            //Calcul selon le type de PAC
            switch ($house->heating->pac) {
                //Type Aire/Eau
                case 1:
                    $this->consoKwhPAC *= DBAccess::getCop(1);
                    break;

                //Type Eau/Eau
                case 2:
                    $this->consoKwhPAC *= DBAccess::getCop(2);
                    break;

                //Type ch. électrique
                case 3:
                    $this->consoKwhPAC *= DBAccess::getCop(3);
                    break;

                default:
                    echo 'Type de PAC non connu....';
                    break;
            }
        }
        //Si l'installation n'est pas ECS seul
        else{
             //Si l'unité est en CHF
            if ($house->heating->unit == 1) {
                //Si le prix du kw/h est connu
                if ($house->heating->kwhPrice != null) {
                    //Calcul e la conso selon le prix entré par l'utilisateur
                    $this->consoKwhPAC = ($house->heating->billValue / $house->heating->kwhPrice) - ($house->heating->kwhPrice * $this->SRE);
                } else {
                    //Récupération du prix du Kw/h dans la db
                    $house->heating->kwhPrice = DBAccess::getKwhPrice();
                    //Calcul de la conso
                    $this->consoKwhPAC = $house->heating->billValue / $house->heating->kwhPrice - ($house->heating->kwhPrice * $this->SRE);
                }
            } else {
                //Si l'unité est en kw/h
                if ($house->heating->unit == 2) {
                    //Calcul de la conso
                    $this->consoKwhPAC = $house->heating->billValue - ($house->heating->kwhPrice * $this->SRE);
                }
                else
                    echo 'Unité non prise en compte pour pompe à chaleur....';
            }

            //Calcul de la conso selon le type de PAC et les différents rendements
            switch ($house->heating->pac) {
                //Type Aire/Eau
                case 1:
                    $this->consoKwhPAC *= DBAccess::getCop(1);
                    break;

                //Type Eau/Eau
                case 2:
                    $this->consoKwhPAC *= DBAccess::getCop(2);
                    break;

                //Type ch. électrique
                case 3:
                    $this->consoKwhPAC *= DBAccess::getCop(3);
                    break;

                default:
                    echo 'Type de PAC non connu....';
                    break;
            }
        }
        
        return $this->consoKwhPAC;
    }
    
    //Fonction pour le calcul de la consomation en Kw/h d'une chaudière à mazout
    function getConsoOilBoiler($house){
         
        //Calcul du SRE
        $this->SRE = $this->getSRE($house);
        //Récupération du coéficient pour la transformation en Kw/h du mazout
        $this->coefOilKwh = DBAccess::getCop(4);
        
         //Si l'installation est ECS seul
        if ($house->heating->isECSOnly == true) {
            //Si l'unité est en CHF
            if ($house->heating->unit == 1) {
                //Si le prix du litre est connu
                if ($house->heating->literPrice != null) {
                    //Calcul e la conso selon le prix entré par l'utilisateur
                    $this->consoKwhOil = $house->heating->billValue / $house->heating->literPrice * $this->coefOilKwh;
                }
                else{
                    //Récupération du prix du litre dans la DB
                    $house->heating->literPrice = DBAccess::getLiterPrice();
                    //Calcul e la conso selon le prix entré par l'utilisateur
                    $this->consoKwhOil = $house->heating->billValue / $house->heating->literPrice * $this->coefOilKwh;
                }
            }
            else{
                 //Si l'unité est en litre
                if ($house->heating->unit == 3) {
                    //Calcul de la conso selon les données utilisateur
                    $this->consoKwhOil = $house->heating->billValue * $this->coefOilKwh;
                }
                else
                    echo 'Unité non prise en compte pour chaudière à mazout....';
            }
            //Calcul de la conso avec le rendement d'une chaudière à mazout
            $this->consoKwhOil *= $this->coefOilKwh;
            
            return $this->consoKwhOil;
        }
        else{
             //Si l'unité est en CHF
            if ($house->heating->unit == 1) {
                //Si le prix du Kw/h est connu
                if ($house->heating->kwhPrice != null) {
                    //Calcul de la conso en enlevant la partie eau chaude
                    $this->consoKwhOil = ($house->heating->billValue / $house->heating->kwhPrice) - ($house->heating->kwhPrice * $this->SRE);                 
                }
                else{
                    //Récupération du prix du Kw/h dans la db
                    $house->heating->kwhPrice = DBAccess::getKwhPrice();
                    //Calcul de la conso en enlevant la partie eau chaude
                    $this->consoKwhOil = ($house->heating->billValue / $house->heating->kwhPrice) - ($house->heating->kwhPrice * $this->SRE);                 
                }
            }
            else{
                //Si l'unité est en litre
                if ($house->heating->unit == 3) {
                    //Calcul de la consommation
                    $this->consoKwhOil = ($house->heating->billValue * $this->coefOilKwh) - ($house->heating->kwhPrice * $this->SRE);
                }
                else
                    echo 'Unité non prise en compte pour chaudière à mazout....';
            }
            //Calcul de la conso avec le rendement d'une chaudière à mazout
            $this->consoKwhOil *= $this->coefOilKwh;
            
            return $this->consoKwhOil;
        }
        
    }
    
    //Fonction pour le calcul en Kw/h d'une chaudière à buches ou à pellets
    function getConsoWoodPelletBoiler($house){
        //Calcul du SRE
        $this->SRE = $this->getSRE($house);
       //Récupération du rendement d'un chaudière à bûches ou à pellets
       $this->rendementWoodPellet = DBAccess::getCop(5);
       //Récupération du coéficient conso (2 = id pour pellets dans db)
        $this->coefConsoPellet= DBAccess::getCoefConsoWoodPellet(2);
        //Récupération de coéficient poids 
        $this->coefWeightPellet= DBAccess::getCoefWeightWoodPellet(2);
        //Récupération du coéficient conso (1 = id pour buches dans db)
        $this->coefConsoWood = DBAccess::getCoefConsoWoodPellet(1);
        //Récupération de coéficient poids 
        $this->coefWeightWood = DBAccess::getCoefWeightWoodPellet(1);
        
          //Si l'installation est ECS seul
        if ($house->heating->isECSOnly == true) {
            //Si le matériel de conbustion est "Buches"
            if($house->heating->material == 1){
                
                //Calcul de la consomation pour des buches
                $this->consoKwhWoodPellet = $house->heating->billValue * $this->coefConsoWood * $this->coefWeightWood;          
        }
        else{
            //Si le matériel de conbustion est "Pellets"
            if($house->heating->material == 2){
                
                //Calcul de la consomation pour des buches
                $this->consoKwhWoodPellet = $house->heating->billValue * $this->coefConsoPellet * $this->coefWeightPellet;          
            }
            else
                echo 'Matériel de conbustion non connu - 1 = buches, 2 = pellets';
        }
        //Calcul de la conso selon le rendement spécifique
        $this->consoKwhWoodPellet *= $this->rendementWoodPellet;
        
        return $this->consoKwhWoodPellet;
        }
        //Si l'installation n'est pas ECS seule
        else{
             //Si le matériel de conbustion est "Buches"
            if($house->heating->material == 1){
                //Calcul de la consomation pour des buches sans eau chaude
                $this->consoKwhWoodPellet = ($house->heating->billValue * $this->coefConsoWood * $this->coefWeightWood) - (DBAccess::getKwhPrice() * $this->SRE);          
            }
            // Si le matériel de conbustion est "Pellets"
            else
                if($house->heating->material == 2){
                    //Calcul de la consomation pour des buches
                $this->consoKwhWoodPellet = ($house->heating->billValue * $this->coefConsoPellet * $this->coefWeightPellet) - (DBAccess::getKwhPrice() * $this->SRE);  
                }
                else{
                    echo 'Matériel de conbustion non connu - 1 = buches, 2 = pellets';
                }
          //Calcul de la conso selon le rendement spécifique
          $this->consoKwhWoodPellet *= $this->rendementWoodPellet;
          
          return $this->consoKwhWoodPellet;
                  
        }
    }
    
    //Fonction pour le calcul la consommation en Kw/h Poêle à bois et pierre ollaire
    function getConsoSoapstoneBoiler($house){
        //Récupération du coeficient de consommation
        $this->coefConsoSoapstone = DBAccess::getCoefConsoSoapstone();
        //Récupération du coeficient de poids
        $this->coefWeightSoapstone = DBAccess::getCoefWeightSoapstone();
        //Récupération du rendement (6 = Poêle à bois et pierre ollaire)
        $this->rendementSoapstone = DBAccess::getCop(6);
        
        //Calcul de la conso en Kw/h
        $this->consoKwhSoapstone = $house->heating->billValue * $this->coefConsoSoapstone * $this->coefWeightSoapstone * $this->rendementSoapstone;
        
        return $this->consoKwhSoapstone;
                
    }
    //Fonction pour le calcul de la surface de référence énergétique (SRE)
    function getSRE($house) {
        switch ($house->idShape) {
            // Forme carré et rectangle
            case 1:
                $this->totalSurface = $house->M1 * $house->M1 * $house->floors;
                break;
            case 2:
                $this->totalSurface = $house->M1 * $house->M2;
                $this->totalSurface *= $house->floors;

                break;
            //Forme en L
            case 3:
                $this->totalSurface = ($house->M1 * $house->M4) + ($house->M2 - $house->M4) * $house->M3;
                $this->totalSurface *= $house->floors;
                break;
            //Forme en U
            case 4:
                $this->totalSurface = ($house->M1 * $house->M6) + ($house->M4 * $house->M5) + ($house->M2 - $house->M6) * $house->M3;
                $this->totalSurface *= $house->floors;
                break;
            //Forme rect. décalé
            case 5:
               $this->totalSurface = ($house->M1 * $house->M2) + $house->M6 * ($house->M7 - $house->M4) + ($house->M4 * $house->M5);
                $this->totalSurface *= $house->floors;
                break;
            //Forme en T
             case 6:
                $this->totalSurface = ($house->M1 * $house->M2) + ($house->M4 * $house->M5);
                $this->totalSurface *= $house->floors;
                break;
            
            default :
                echo 'Forme de la maison non connue....';
                break;
        }

        return $this->totalSurface;
    }
}
?>